const http = require("http");
const fs = require("fs");
const path = require("path");

/**
 * 搭建一个静态服务器。
 *  读取对应文件夹里面文件
 *  类似 nginx 的静态服务器，或者是  serve包的 静态服务器。
 *  1. 访问地址: http://localhost:4000/项目文件夹名/具体文件.xxx  响应htmls内对应的地址。
 *  2. 能访问的文件类型，如： png, jpg， js等。  
 */

const app = http.createServer((req, res) => {
    res.setHeader("content-type", "text/html;charset=utf-8")
    // 请求内容
    // 获取 请求路径  及   对应参数   及   ip:port ( port 可以配置 )
    const { pathname } = new URL(req.url, 'http://localhost:4000')    
    const serverFileUrl= path.resolve(__dirname, '../htmls', `./${pathname}`)

    // 响应内容  
    // htmls / 访问路径名 / 文件名.对应扩展名
    try {
        const data = fs.readFileSync(serverFileUrl)
        console.log('⚡ ' + serverFileUrl);
        res.end(data)
    } catch(err) {
        switch(err.code) {
            case 'ENOENT':
                res.end("no such file or directory")
                return false;
            default: 
                console.log(err);
                res.end("未知错误!")
        }
    }
})

app.listen(4000, () => {
    console.log(`⚡ 静态服务器4000已经运行了!`);
})
